1. Field of the Invention
The embodiments of the invention relate to the management of updates to software in a group of collaborating servers. Specifically, the embodiments relate to a system for determining when collaborating servers are being updated to a version compatible with other servers allowing for a rolling update to be made.
2. Background
Servers are frequently organized in groups to collaborate with one another to provide a set of services to a group of client computers and applications. A set as used herein refers to any number of items including one item. The servers in the group typically run identical software components to one another for each service offered, that is, the servers each run the same version of a service or application component. Servers with identical versions of software components are compatible with one another. Compatibility indicates that the servers handle data and service clients in an equivalent manner such that data generated by one server can be used by another server. Often clients are transferred or distributed amongst a group of servers to balance load on the servers. Compatibility ensures that the clients have a seamless interaction if transferred between servers.
Servers are often expected to run continuously and downtime is sought to be minimized. However, when software is to be updated for a server it is taken down temporarily. If the updated software is incompatible, then the downtime may be more extensive. FIG. 1A is a diagram illustrating a scenario where updated software is backward compatible. Three servers 101A, 101B, 101C are operating in collaboration with one another. The first server 101A is halted to update its software and then restarted. The second server 101B is halted to update its software after the first server 101A has restarted. The third server 101C is halted and its software is updated after both the first server 101A and the second server 101B have restarted. At all times at least two servers out of the group of three servers are running and services are continuously provided to clients. This process is referred to as a rolling update and is possible when updated servers have software that is backward compatible with the other servers.
FIG. 1B is a diagram illustrating a scenario where updated software is not backward compatible. Each server 101A, 101B, 101C must be halted at the same time and updated. This is referred to as a parallel update. During this time period no service is available to the clients. The server 101A, 101B, 101C must be updated at the same time because different software versions cannot run at the same time because they are not compatible and data would be lost or corrupted.
A determination of whether a rolling update can be performed is an entirely manual process. System administrators must work with the software vendors to determine whether backward compatibility exists and then update their machines accordingly. Also, there is no facility for handling the scenario where a software version initially believed to be compatible subsequently is discovered to have incompatibilities with other versions.